const axios = require('axios');

async function testSpecificCallback() {
  const callbackUrl = 'https://13be2816e0e8.ngrok-free.app/lxt/shuidi-callback?type=qq&code=A22526AA662BFDA295A5905C39B2CA93';
  
  console.log('🧪 测试你收到的具体回调URL');
  console.log('🔗 URL:', callbackUrl);
  console.log('📋 参数解析:');
  console.log('   └─ type: qq');
  console.log('   └─ code: A22526AA662BFDA295A5905C39B2CA93');
  console.log('');
  
  try {
    console.log('⏳ 发送回调请求...');
    
    const response = await axios.get(callbackUrl, {
      maxRedirects: 0, // 不自动跟随重定向
      validateStatus: function (status) {
        return status >= 200 && status < 500;
      },
      headers: {
        'ngrok-skip-browser-warning': 'true',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
      }
    });
    
    console.log('📊 响应状态码:', response.status);
    
    if (response.status >= 300 && response.status < 400) {
      const redirectLocation = response.headers.location;
      console.log('🔄 重定向到:', redirectLocation);
      
      // 分析重定向目标
      if (redirectLocation) {
        const url = new URL(redirectLocation);
        console.log('');
        console.log('📍 重定向分析:');
        console.log(`   └─ 协议: ${url.protocol}`);
        console.log(`   └─ 域名: ${url.hostname}`);
        console.log(`   └─ 路径: ${url.pathname}`);
        console.log(`   └─ 参数: ${url.search}`);
        
        if (redirectLocation.includes('/login-success')) {
          console.log('✅ 成功重定向到登录成功页面！');
          console.log('💡 如果前端没有跳转，检查前端路由配置');
        } else if (redirectLocation.includes('/register-success')) {
          console.log('✅ 成功重定向到注册成功页面！');
          console.log('💡 如果前端没有跳转，检查前端路由配置');
        } else if (redirectLocation.includes('/login-error')) {
          console.log('⚠️ 重定向到错误页面');
          console.log('💡 查看URL参数了解具体错误原因');
        } else if (redirectLocation.includes('/home')) {
          console.log('✅ 直接重定向到主页！');
        } else {
          console.log('❓ 重定向到未预期的页面');
        }
      }
    } else if (response.status === 200) {
      console.log('📄 返回了200状态，这可能不是预期行为');
      console.log('💡 应该重定向到前端页面，而不是返回内容');
      console.log('📝 响应内容:', response.data.substring(0, 200) + '...');
    }
    
  } catch (error) {
    if (error.response) {
      console.log('📊 响应状态码:', error.response.status);
      
      if (error.response.status >= 300 && error.response.status < 400) {
        const redirectLocation = error.response.headers.location;
        console.log('🔄 重定向到:', redirectLocation);
        
        if (redirectLocation.includes('/login-error')) {
          console.log('⚠️ 重定向到错误页面');
          
          // 解析错误参数
          try {
            const url = new URL(redirectLocation);
            const errorMsg = url.searchParams.get('msg');
            const errorDetail = url.searchParams.get('error');
            
            console.log('📋 错误信息:');
            if (errorMsg) console.log(`   └─ 错误消息: ${decodeURIComponent(errorMsg)}`);
            if (errorDetail) console.log(`   └─ 错误详情: ${decodeURIComponent(errorDetail)}`);
          } catch (e) {
            console.log('❌ 无法解析错误URL参数');
          }
        }
      } else {
        console.log('❌ HTTP错误:', error.response.status, error.response.statusText);
        console.log('📝 错误内容:', error.response.data);
      }
    } else {
      console.log('❌ 网络错误:', error.message);
      
      if (error.code === 'ENOTFOUND') {
        console.log('💡 建议: 检查ngrok隧道是否正在运行');
      } else if (error.code === 'ECONNREFUSED') {
        console.log('💡 建议: 检查后端服务器是否在运行');
      }
    }
  }
}

async function main() {
  console.log('=== 调试具体回调问题 ===\n');
  
  await testSpecificCallback();
  
  console.log('\n🎯 问题诊断:');
  console.log('1. 如果重定向到成功页面，但前端没反应 → 检查前端路由');
  console.log('2. 如果重定向到错误页面 → 检查错误消息');
  console.log('3. 如果返回200状态 → 回调处理逻辑可能有问题');
  console.log('4. 如果网络错误 → 检查服务器状态');
  
  console.log('\n📋 下一步建议:');
  console.log('- 查看后端服务器控制台日志');
  console.log('- 检查浏览器开发者工具的网络请求');
  console.log('- 确认前端路由配置正确');
}

main().catch(console.error); 